// 为了便于后期维护，通过会把router专门写在一个文件中
// 1、引入路由对象
import Vue from "vue";
import VueRouter from "vue-router";

// 2、注册全局组件  router-link（声明式导航）   router-view（挂载）
Vue.use(VueRouter)

// 3、创建路由实例对象
const router = new VueRouter({
    // mode: 'history',
    // 4、创建路由规则
    routes: [{
        path: '/',
        // 重定向
        redirect: '/index'
    }, {
        path: '/login',
        // 按需引入组件
        component: () =>
            import ('../views/Login.vue')
    }, {
        path: '/register',
        // 按需引入组件
        component: () =>
            // @表示src目录的别名
            import ('@/views/Register.vue')
    }, {
        path: '/personal',
        // 按需引入组件
        component: () =>
            // @表示src目录的别名
            import ('@/views/Personal.vue')
    }, {
        path: '/edit_profile',
        // 按需引入组件
        component: () =>
            // @表示src目录的别名
            import ('@/views/Edit_profile.vue')
    }, {
        path: '/index',
        // 按需引入组件
        component: () =>
            // @表示src目录的别名
            import ('@/views/Index.vue')
    }, {
        path: '/articaldetail',
        // 按需引入组件
        component: () =>
            // @表示src目录的别名
            import ('@/views/Articaldetail.vue')
    }, {
        path: '/commentList',
        // 按需引入组件
        component: () =>
            // @表示src目录的别名
            import ('@/views/CommentList.vue')
    }, {
        path: '/myFollow',
        // 按需引入组件
        component: () =>
            // @表示src目录的别名
            import ('@/views/MyFollow.vue')
    }, {
        path: '/mySatr',
        // 按需引入组件
        component: () =>
            // @表示src目录的别名
            import ('@/views/MySatr.vue')
    }]
})

// 解决反复跳转到同一个路由地址报错问题
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
        return originalPush.call(this, location).catch(err => err)
    }
    // 5、暴露路由对象
export default router